package br.com.fox.iebav.session;

import java.io.Serializable;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

import org.primefaces.context.RequestContext;

import br.com.fox.iebav.controller.command.LogarAreaRestrita;
import br.com.fox.iebav.entity.Usuarios;
import br.com.fox.iebav.session.abstractsession.AbstractSession;

@Named("autenticacaoBeanSession")
@SessionScoped
public class AutenticacaoBeanSession extends AbstractSession implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
//	ATRIBUTOS
	private Usuarios usuarioLogado;
	private String login,senha;
	private Boolean usuarioAutenticado;
	
//	CONTROLLER COMMAND
	private @EJB LogarAreaRestrita logarAreaRestrita;
	private Map<String, Object> resultMap;
	
	@PostConstruct
	public void init()
	{
		setUsuarioLogado(new Usuarios());
		setUsuarioAutenticado(false);
	}
	
	public void logarSistema()
	{		
		resultMap = executarComando(logarAreaRestrita, usuarioLogado);
		setUsuarioLogado( (Usuarios)resultMap.get("usuario") );
		
	 	if( ((Boolean)resultMap.get("resultado")) )
	 	{
	 		//logado
	 		setUsuarioAutenticado(true);
	 		RequestContext.getCurrentInstance().execute("dgLoginAdmin.hide()");
	 		redirecionarURL("index.html");
	 	}
	 	else
	 	{
	 		//n logado
	 		init();
	 		facesMensagens(FacesMessage.SEVERITY_ERROR, resultMap.get("mensagem").toString(),"" );
	 		getUsuarioLogado().setLogin("");
	 		getUsuarioLogado().setSenha("");
	 	}
	}
	
	public void sairSistema()
	{
		init();
		redirecionarURL("../../../index.html");
	}
	
	public void voltarWebSite()
	{
		redirecionarURL("../../../index.html");
	}

	public Usuarios getUsuarioLogado() {
		return usuarioLogado;
	}

	public void setUsuarioLogado(Usuarios usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}

	public Boolean getUsuarioAutenticado() {
		return usuarioAutenticado;
	}

	public void setUsuarioAutenticado(Boolean usuarioAutenticado) {
		this.usuarioAutenticado = usuarioAutenticado;
	}

	public String getLogin() {
		return login;
	}

	public String getSenha() {
		return senha;
	}

		
}
